﻿Public Class frmResultadosExamen

    '0 indice
    '1 invisible codigo de boleta de detalle    
    '2 estado de examen
    '3 muestra de examen
    '4 fecha
    '5 tipo de examen
    '6 Nombre de examen
    '7 Descripcion de examen
    '8 Precio
    '9 Resultado
    '10 Valores Normales


    Dim total As Double

    Private Sub frmResultadosExamen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lblcodigoboleta.Text = cB.Boleta_codigo_Boleta
        lblcodigopaciente.Text = cP.codigo_paciente
        lbldni.Text = cP.dni_Paciente
        lblnombre.Text = cP.nombre_Paciente & " " & cP.apepaterno_Paciente & " " & cP.apematerno_Paciente
        DGVDetalleBoleta.DataSource = cB.mtdListarDetalleBoletaPaciente
        TotalPrecio()
        lbltotal.Text = total.ToString
        With DGVDetalleBoleta
            'CODIGO DE DETALLE DE BOLETA NO VISIBLE
            .Columns.Item(1).Visible = False
            .AllowUserToOrderColumns = False
            .Refresh()
            .Columns(4).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
            .Columns(2).DefaultCellStyle.BackColor = Drawing.Color.Blue
            .Columns(2).DefaultCellStyle.SelectionBackColor = Drawing.Color.DeepSkyBlue
            .Columns(3).DefaultCellStyle.BackColor = Drawing.Color.Red
            .Columns(3).DefaultCellStyle.SelectionBackColor = Drawing.Color.LightCoral
        End With
        sololectura()
    End Sub

    Private Sub TotalPrecio()
        For Each Row As DataGridViewRow In DGVDetalleBoleta.Rows()
            total += Row.Cells(8).Value
        Next
    End Sub


    '0 indice
    '1 invisible codigo de boleta de detalle    
    '2 estado de examen
    '3 muestra de examen
    '4 fecha
    '5 tipo de examen
    '6 Nombre de examen
    '7 Descripcion de examen
    '8 Precio
    '9 Resultado
    '10 Valores Normales

    Private Sub sololectura()

        With DGVDetalleBoleta
            .Columns(4).ReadOnly = True
            .Columns(4).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
            .Columns(5).ReadOnly = True
            .Columns(6).ReadOnly = True
            .Columns(7).ReadOnly = True
            .Columns(8).ReadOnly = True
        End With

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'ACTUALIZAR ESTADO DE DETALLE BOLETA
        Dim codigodetalle As Integer
        Dim estado As Integer
        For Each Row As DataGridViewRow In DGVDetalleBoleta.Rows()
            'captura la segunda columna del la lista
            If (Row.Cells(0).Value = True) Then
                codigodetalle = Row.Cells(1).Value 'obtiene los codigos de los detalles
                estado = Row.Cells(2).Value * -1 'obtiene los cheks de los estados de los codigos de boleta
                cB.codigo_BoletaDetalle = codigodetalle
                cB.estado_BoletaDetalle = estado
                cB.mtdActualizarEstadoDetalleBoleta() 'actualiza el estado de lo detalles de boleta
                'Exit For 'Sale del ForEACH solo se recorre 1 vez
            End If
        Next

        With DGVDetalleBoleta
            .DataSource = cB.mtdListarDetalleBoletaPaciente
            'CODIGO DE DETALLE DE BOLETA NO VISIBLE
            .Columns.Item(1).Visible = False
            .AllowUserToOrderColumns = False
            'AUTOMEDICION DE LA COLUMNA FECHA
            .Columns(4).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
            .Refresh()
        End With

        sololectura()


    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        'ACTUALIZAR MUESTRA
        Dim codigodetalle As Integer
        Dim muestra As Integer
        Dim f_muestra As Boolean

        Try
            For Each Row As DataGridViewRow In DGVDetalleBoleta.Rows()
                'captura la segunda columna del la lista
                f_muestra = False
                If (Row.Cells(0).Value = True) Then
                    codigodetalle = Row.Cells(1).Value 'obtiene los codigos de detalle de boleta
                    'SE SELECCIONA EL CHECK BOX Y SI ESTA VACIO EL CHECK DE MUESTRA NO DEBERIA MANDAR ERROR
                    'CORREGIR NO DEBE DE TRABAJAR SI SALE UN NULO
                    muestra = Row.Cells(3).Value * -1 'obtiene los cheks de muestra, si es que el paciente presento o no muestra

                    cB.codigo_BoletaDetalle = codigodetalle
                    cB.muestra_BoletaDetalle = muestra
                    cB.mtdActualizarMuestraDetalleBoleta() 'actualiza estado de muestra por detalle de boleta.
                    'Exit For 'Sale del ForEACH solo se recorre 1 vez
                End If
            Next

            With DGVDetalleBoleta
                .DataSource = cB.mtdListarDetalleBoletaPaciente
                'CODIGO DE DETALLE DE BOLETA NO VISIBLE
                .Columns.Item(1).Visible = False
                .AllowUserToOrderColumns = False
                'AUTOMEDICION DE LA COLUMNA FECHA
                .Columns(4).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
                .Refresh()
            End With

            sololectura()
        Catch ex As Exception

        End Try
        


    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'AÑADIR RESULTADOS DE LOS EXAMENES
        'ACTUALIZAR RESULTADO DE EXAMENES
        Dim resultado As String
        Dim descripcion As String
        Dim codigodetalle As Integer

        For Each Row As DataGridViewRow In DGVDetalleBoleta.Rows()
            'captura la segunda columna del la lista
            If (Row.Cells(0).Value = True) Then                
                resultado = Row.Cells(9).Value 'obtiene los codigos de detalle de boleta
                descripcion = Row.Cells(10).Value 'obtiene los cheks de muestra, si es que el paciente presento o no muestra
                codigodetalle = Row.Cells(1).Value
                cB.resultado_BoletaDetalle = resultado
                cB.descripcion_BoletaDetalle = descripcion
                cB.codigo_BoletaDetalle = codigodetalle
                cB.mtdActualizarRespuestaDetalleBoleta() 'actualiza estado de muestra por detalle de boleta.
                'Exit For 'Sale del ForEACH solo se recorre 1 vez
            End If
        Next

        With DGVDetalleBoleta
            .DataSource = cB.mtdListarDetalleBoletaPaciente
            'CODIGO DE DETALLE DE BOLETA NO VISIBLE
            .Columns.Item(1).Visible = False
            .AllowUserToOrderColumns = False
            'AUTOMEDICION DE LA COLUMNA FECHA
            .Columns(4).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
            .Refresh()
        End With

        sololectura()
    End Sub

    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        cB.total_Boleta = Decimal.Parse(lbltotal.Text)
        cB.Boleta_codigo_Boleta = Integer.Parse(lblcodigoboleta.Text)
        cB.Paciente_codigo_paciente = Integer.Parse(lblcodigopaciente.Text)
        cB.estado_Boleta = 1
        cB.mtdActualizarTOTAL()
        cB.mtdActualizarEstadoBoleta()
        examen.DGVPacienteExamen.DataSource = cB.ListarBoletas
        Me.Close()

    End Sub

    Private Sub btnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCerrar.Click
        Me.Close()
    End Sub
End Class